package com.tourism.service;

import com.github.pagehelper.PageInfo;
import com.tourism.entity.User;
import com.tourism.entity.UserQuery;
import com.tourism.exception.GlobalException;

public interface UserService {
    /**
     * 根据用户id查询用户信息
     *
     * @param id
     * @return
     */
    User getUserById(Long id);

    /**
     * 根据用户名查询用户信息
     *
     * @param username
     * @return
     */
    /**
     * 根据用户删除用户
     *
     * @param id
     * @return
     */
    Boolean deleteUserById(long id);

    User getUserByUsername(String username);

    /**
     * 新增用户
     *
     * @param user
     * @return
     */
    boolean addUser(User user) throws GlobalException;


    /**
     * 判断用户名是否已经存在
     *
     * @param username
     * @return
     */
    boolean existUser(String username, Long id);

    /**
     * 更新用户的冻结状态
     *
     * @param id
     * @param freeze
     * @return
     */
    boolean updateUserFreeze(Long id, Boolean freeze) throws GlobalException;

    /**
     * 更新用户信息
     *
     * @param user
     * @return
     */
    boolean updateUser(User user) throws GlobalException;

    /**
     * 修改用户密码
     *
     * @param id
     * @param password
     * @param newPassword
     * @return
     */
    boolean updateUserPassword(Long id, String password, String newPassword) throws GlobalException;

    /**
     * 查询用户列表
     *
     * @param userQuery
     * @return
     */
    PageInfo<User> getUserList(UserQuery userQuery) throws GlobalException;
}
